package leetcode_800;

import java.util.PriorityQueue;

/**
 *@author 周杨
 *KthLargestElementInAStream_703 实现输出一个流中第N大的数
 *describe:用堆 AC 45%
 *2018年10月10日 下午7:29:56
 */
public class KthLargestElementInAStream_703 {
	PriorityQueue<Integer> queue;
	int k;
	public KthLargestElementInAStream_703(int k, int[] nums) {
		this.k=k;
        this.queue=new PriorityQueue<Integer>();	
        for(int i:nums) {
        	if(queue.size()<k)
        		queue.offer(i);
        	else {
        		if(i>queue.peek()) {
        			queue.poll();
        			queue.offer(i);
        		}
        	}
        }
    }
    
    public int add(int val) {
    	if(queue.size()<k) {//唯一情况 是第一次
    		queue.offer(val);
    		return val;
    	}
        if(val>queue.peek()) {
        	queue.poll();
        	queue.offer(val);
        }
        return queue.peek();
    }
}
